#pragma once

#include <memory>
#include <vector>

#include "Network.h"

#include "../Neuron/KernelNeuron.h"
#include "../Neuron/Neuron.h"

using namespace std;

class CSVM : public CNetworkBase
{
public:
	CSVM();

public:
	virtual bool Save(const char * szFileName = nullptr);

	virtual bool Load(const char * szFileName = nullptr);

	virtual Vector Execute(Vector InputData);

public:
	void InsertKernelNeuronToHiddenLayer(shared_ptr<CKernelNeuron> & kernelNeuron);

	void SetOutputLayerNeuron(shared_ptr<CNeuron> & outputNeuron);

private:
	vector< shared_ptr<CKernelNeuron> >  m_HiddenLayer;

	shared_ptr<CNeuron> m_OutputLayer;
};